package xyz.xmh.pattern.behavioral.observerpattern;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Administrator
 * 主题，被观察对象
 */
public class Subject {

    private final List<AbstractObserver> abstractObserverList = new ArrayList<>();

    private int state;

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
        // 状态修改，通知所有的观察类
        notifyAllObserver();
    }

    /**
     * 添加观察者
     *
     * @param abstractObserver 观察对象
     */
    public void addObserver(AbstractObserver abstractObserver) {
        abstractObserverList.add(abstractObserver);
    }

    /**
     * 通知所有的观察者
     */
    private void notifyAllObserver() {
        for (AbstractObserver abstractObserver : abstractObserverList) {
            abstractObserver.update();
        }
    }

}
